// 使用泛型定义函数
function fn<T>(a:T):T{
    return a
}

// 调用的时候进行类型转换

fn<string>("hello")

fn(10)

function fn1<T,K>(a:T,b:K):K{
    console.log(a);
    return b
}

fn1<number,string>(1,'hello')


interface NameInterface{
    name:string
}

interface IPerson1{
    name:string,
    age:number
}

function fn2<T extends NameInterface>(a:T):string{
    return a.name
}

fn2<IPerson1>({name:"小敏",age:10})